/**
  * @File    :   opt3001.h
  * @Time    :   2020/04/21 22:15:22
  * @Author  :   huenrong
  */

#ifndef __OPT3001_H
#define __OPT3001_H

#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/i2c.h>
#include <linux/i2c-dev.h>

#define OPT3001_I2C_ADDR 0x44 // IIC设备地址

// opt3001寄存器地址
#define RESULT 0x00            // 结果
#define CONFIG 0x01            // 配置
#define LOW_LIMIT 0x02         // 下限
#define HIGH_LIMIT 0x03        // 上限
#define MANUFACTURER_ID 0x7E   // 厂商ID
#define OPT3001_DEVICE_ID 0x7F // 设备ID

/**
  * @name   opt3001_init
  * @brief  opt3001初始化
  * @param  fd: 设备文件描述符
  * @retval 成功: 返回0
            失败: 返回-1
  */
int opt3001_init(const int fd);

/**
  * @name   opt3001_read_lux
  * @brief  opt3001读取光照强度值
  * @param  read_lux: 读取到的光照强度值((单位: 0.01 lx))
  * @param  fd: 设备文件描述符
  * @retval 成功: 返回0
            失败: 返回-1
  */
int opt3001_read_lux(uint32_t *read_lux, const int fd);

#endif
